// let o1: {
//   name: string;
// }

// const enum zl {
//   a = 'a',
//   b = 'b'
// }

// 使用接口定义函数类型
// interface Ifunc2 {
//   (): void
// }
// let func2: {}

// 定义类型别名
type str = string
let s: str = "我是小满"
console.log(s);
// 定义函数别名
type str1 = () => string
let s3: str1 = () => "我是小满"
console.log(s);
// 定义值的别名
type value = boolean | 0 | '213'
let s4: value = true  // 变量s的值 只能是上面value定义的值

// 类型别名也可以是泛型 
type container<T> = {
  value: T
};
type Add = (a: number, b: number) => number;


const add: Add = (a: number, b: number): number => {
    return a + b;
};
console.log(add(3, 4));
 
type Greet = (name?: string) => string;
const greet: Greet = (name?: string): string => {
    return `Hello, ${name}!`;
};
console.log(greet(''));


 